/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import JPAControllers.*;
import JPAControllers.exceptions.PreexistingEntityException;
import Persistencia.*;
import dominio.InformeDomain;
import java.util.ArrayList;
import java.util.List;

public class ControladorInforme {
    Informe informe;
    InformeDomain informeD;
    InformeJpaController controlador;
    ControladorSesion controladorSes;
    Sesion sesion;

    public String guardarInforme(){
        String res="";
        try {
            controlador = new InformeJpaController();
            setInforme();
            controlador.create(informe);
            res="Se agrego exitosamente el informe del paciente: "+
                    ((Paciente)sesion.getPaciente()).getNombre()+" "+((Paciente)sesion.getPaciente()).getApellido()+
                    " en la fecha: "+sesion.getFecha();
            return res;
        }catch(Exception ex){
            res="No se pudo agregar el informe para el paciente: "+((Paciente)sesion.getPaciente()).getNombre()+" "+((Paciente)sesion.getPaciente()).getApellido();
            return res;
        }
    }

    public List<Informe> encontrarInformes(){
        controlador = new InformeJpaController();
        return controlador.findInformeEntities();
    }

    public Informe setInforme(){
        informe=new Informe();
        controladorSes= new ControladorSesion();
        sesion=controladorSes.encontrarSesion(informeD.getIdSesion());        
        informe.setSesion(sesion);
        informe.setTitulo(informeD.getTitulo());
        informe.setDescripcion(informeD.getDescripcion());
        return informe;
    }

    public void setInformeD(InformeDomain in){
        informeD=in;
    }

    public Informe encontrarInforme(String idInforme) {
        Informe infor=null;
        List<Informe> listaTodosInforme=encontrarInformes();
        for(int i=0;i<listaTodosInforme.size();i++){
            if(listaTodosInforme.get(i).getIdInforme()==Integer.parseInt(idInforme)){
                infor=(listaTodosInforme.get(i));
                break;
            }
        }
        return infor;
    }

    public List<Informe> encontrarMisInformes(String idFisio) {
        controladorSes= new ControladorSesion();
        List<Informe> list=encontrarInformes();
        List<Informe> list2 = new ArrayList<Informe>();
        List<Sesion> listSesion;
        listSesion=controladorSes.encontrarMisSesiones(idFisio);
        for(int i=0;i<list.size();i++){
            for(int j=0;j<listSesion.size();j++){
                if(list.get(i).getSesion().getIdSesion()==listSesion.get(j).getIdSesion()){
                    list2.add(list.get(i));
                }
            }
        }
        return list2;
    }

    public void eliminarInforme(Informe ob) {
        try {
            informe=ob;
            controlador.destroy(informe.getIdInforme());
        }catch(Exception ex){}
    }

    public void setInformeMod(){
        informe.setIdInforme(Integer.parseInt(informeD.getIdInforme()));
        informe.setComentarioList(encontrarInforme(""+informe.getIdInforme()).getComentarioList());
        //informe.setComentariovideoList(encontrarInforme(""+informe.getIdInforme()).getComentariovideoList());  OJOOO...LO COMENTE PORK MARCABA ERROR
    }

    public void modificarInforme(){
        try {
            controlador = new InformeJpaController();           
            controlador.edit(informe);
        }catch(Exception ex) {
            ex.printStackTrace();
        }
    }

    public Informe encontrarInformeSes(String idSesion) {
        List<Informe> list=encontrarInformes();
        Informe res=null;
        for(int i=0;i<list.size();i++){
            if(list.get(i).getSesion().getIdSesion()==Integer.parseInt(idSesion)){
                res=list.get(i);
                break;
            }
        }
        return res;
    }

    public InformeDomain convertirDomain(Informe log) {
        System.out.println(log+" informe");
        InformeDomain res=new InformeDomain();
        res.setIdInforme(""+log.getIdInforme());
        res.setIdSesion(""+log.getSesion().getIdSesion());
        res.setTitulo(log.getTitulo());
        res.setDescripcion(log.getDescripcion());
        return res;
    }
}
